package cn.iocoder.yudao.module.resource.service.creator;

import cn.iocoder.yudao.module.resource.dal.dataobject.creator.ResourceCreatorDO;

import javax.validation.Valid;
import java.util.List;

/**
 * 创作者 Service 接口
 *
 * @author 芋道源码
 */
public interface ResourceCreatorService {

    /**
     * 创建创作者
     *
     * @param creatorDO 创作者信息
     * @return 创作者ID
     */
    Long createCreator(@Valid ResourceCreatorDO creatorDO);

    /**
     * 更新创作者
     *
     * @param creatorDO 创作者信息
     */
    void updateCreator(@Valid ResourceCreatorDO creatorDO);

    /**
     * 删除创作者
     *
     * @param id 创作者ID
     */
    void deleteCreator(Long id);

    /**
     * 获得创作者
     *
     * @param id 创作者ID
     * @return 创作者
     */
    ResourceCreatorDO getCreator(Long id);

    /**
     * 根据用户ID获得创作者
     *
     * @param userId 用户ID
     * @return 创作者
     */
    ResourceCreatorDO getCreatorByUserId(Long userId);

    /**
     * 获得创作者列表
     *
     * @return 创作者列表
     */
    List<ResourceCreatorDO> getCreatorList();

    /**
     * 审核创作者
     *
     * @param id 创作者ID
     * @param auditStatus 审核状态
     * @param auditRemark 审核备注
     */
    void auditCreator(Long id, Integer auditStatus, String auditRemark);

    /**
     * 增加积分
     *
     * @param id 创作者ID
     * @param points 积分数量
     */
    void addPoints(Long id, Integer points);

    /**
     * 减少积分
     *
     * @param id 创作者ID
     * @param points 积分数量
     */
    void deductPoints(Long id, Integer points);

    /**
     * 增加素材数量
     *
     * @param id 创作者ID
     */
    void incrementMaterialCount(Long id);

    /**
     * 增加粉丝数量
     *
     * @param id 创作者ID
     */
    void incrementFollowerCount(Long id);

}
